// 抽象类
// 程序架构设计
// 面向对象的三大特征： 封装 继承 多态
// 前端使用抽象类和接口 主要是使用他们的结构化特性
abstract class Foo{ 
  abstract name: string;
  abstract get nameGetter(): string;
  abstract method(name: string): string;
  show() { 
    console.log("show")
  }
  static info(): void{
    console.log("info")
  }
}

class Baz extends Foo{
  name = "baz";
  get nameGetter(): string { 
    return this.name;
  }
  method(name: string): string{
    return name;
  }
}

const baz = new Baz();
baz.method("hello");
baz.show();